<Schema name="FDTCANopenCommunicationSchema" xmlns="urn:schemas-microsoft-com:xml-data"	xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:fdt="x-schema:FDTDataTypesSchema.xml">
	<!--Definition of Attributes-->
	<AttributeType name="schemaVersion" dt:type="number" default="0.90"/>
	<AttributeType name="transferType" dt:type="enumeration" dt:values="segment block"/>	
 	<AttributeType name="index" dt:type="ui2"/> 
 	<AttributeType name="subIndex" dt:type="ui1"/> 
 	<AttributeType name="nodeID" dt:type="ui1"/>   
 	<AttributeType name="abortCode" dt:type="ui4"/> 
	<AttributeType name="communicationReference" dt:type="uuid"/>
	<AttributeType name="sequenceTime" dt:type="ui4"/>
	<AttributeType name="delayTime" dt:type="ui4"/>
	<AttributeType name="sdoTransmitId" dt:type="ui2"/>
	<AttributeType name="sdoReceiveId" dt:type="ui2"/>
	<AttributeType name="nmtType" dt:type="enumeration" dt:values="startNode stopNode enterPreOperational resetNode resetCommunication"/>
	<AttributeType name="emergencyErrorCode" dt:type="ui2"/>
	<AttributeType name="errorRegister" dt:type="ui1"/>
	<AttributeType name="manufacturerSpecificErrorCode" dt:type="bin.hex"/>
	<AttributeType name="emcyCANId" dt:type="ui2"/>

	<!--Definition of Elements-->
	
	<!-- Connect Request -->
	<ElementType name="ConnectRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="nodeID" required="yes"/>
		<!-- optional if CAN-ID is not the pre-defined one -->
		<attribute type="sdoTransmitId" required="no"/> 
		<!-- optional if CAN-ID is not the pre-defined one -->
		<attribute type="sdoReceiveId" required="no"/>
		<!-- optional if EMCY is communication is needed and 
			   CAN-ID is not the pre-defined one -->
		<attribute type="emcyCANId" required="no"/>
	</ElementType>
	
	<!-- Connect Response -->
	<ElementType name="ConnectResponse" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>
	
	<!-- Disconnect Request -->
	<ElementType name="DisconnectRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>
	
	<!-- Disconnect Response -->
	<ElementType name="DisconnectResponse" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- SDOUpload Request -->
	<ElementType name="SDOUploadRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="index" required="yes"/>
		<attribute type="subIndex" required="no"/>
		<!-- if not provided by the Device DTM the Comm DTM decides-->
		<attribute type="transferType" required="no"/>
	</ElementType>
	
	<!-- SDOUoload Repsonse -->
	<ElementType name="SDOUploadResponse" content="eltOnly" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<element type="fdt:CommunicationData" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	
	<!-- SDODownload Request -->
	<ElementType name="SDODownloadRequest" content="eltOnly" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="index" required="yes"/>
		<attribute type="subIndex" required="no"/>
		<!-- if not provided by the Device DTM the Comm DTM decides-->
		<attribute type="transferType" required="no"/>
		<element type="fdt:CommunicationData" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	
	<!-- SDODownload Reponse -->
	<ElementType name="SDODownloadResponse" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Cancel Transfer -->
	<ElementType name="CancelTransfer" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="abortCode" required="yes"/>
	</ElementType>

	<!-- NMT Request -->
	<ElementType name="NMTRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="nmtType" required="yes"/>
	</ElementType>

	<!-- NMT Response -->
	<ElementType name="NMTResponse" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Subscribe Request -->
	<ElementType name="SubscribeRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Subscribe Response -->
	<ElementType name="SubscribeResponse" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- EMCY Write -->
	<ElementType name="EMCYWrite" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
		<attribute type="emergencyErrorCode" required="yes"/>
		<attribute type="errorRegister" required="yes"/>
		<attribute type="manufacturerSpecificErrorCode" required="yes"/>
	</ElementType>

	<!-- Unsubscribe Request -->
	<ElementType name="UnsubscribeRequest" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Unsubscribe Response -->
	<ElementType name="UnsubscribeResponse" content="empty" model="closed">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Sequence Begin -->
	<ElementType name="SequenceBegin" content="empty" model="closed">
		<attribute type="sequenceTime" required="no"/>
		<attribute type="delayTime" required="no"/>
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Sequence End -->
	<ElementType name="SequenceEnd" content="empty" model="closed">
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Sequence Start-->
	<ElementType name="SequenceStart" content="empty" model="closed">
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Abort -->
	<ElementType name="Abort" content="empty" model="closed">
		<attribute type="communicationReference" required="yes"/>
	</ElementType>

	<!-- Root Element -->
	<ElementType name="FDT" content="eltOnly" model="closed">
		<attribute type="schemaVersion" required="no"/>
		<attribute type="fdt:nodeId" required="no"/>
		<group order="one">
			<element type="ConnectRequest"/>
			<element type="ConnectResponse"/>
			<element type="DisconnectRequest"/>
			<element type="DisconnectResponse"/>
			<element type="SDOUploadRequest"/>
			<element type="SDOUploadResponse"/>
			<element type="SDODownloadRequest"/>
			<element type="SDODownloadResponse"/>
			<element type="CancelTransfer"/>
			<element type="NMTRequest"/>
			<element type="NMTResponse"/>
			<element type="SubscribeRequest"/>
			<element type="SubscribeResponse"/>
			<element type="EMCYWrite"/>
			<element type="UnsubscribeRequest"/>
			<element type="UnsubscribeResponse"/>
			<element type="SequenceBegin"/>
			<element type="SequenceEnd"/>
			<element type="SequenceStart"/>
			<element type="Abort"/>
			<element type="fdt:CommunicationError"/>
		</group>
	</ElementType>
</Schema>
